perm filename PLAY.FAI[1,BGB] blob sn#103895 filedate 1974-05-26 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE PLAY	CALL THE D-A CONVERTER TO PLAY.
C00005 00003	BEGIN MAIN BODY OF PROGRAM
C00008 ENDMK
C⊗;
TITLE PLAY	;CALL THE D-A CONVERTER TO PLAY.

	A←1 ↔ B←2 ↔ RET←3
	BUFSIZ ←=2048   
	OPDEF DIP[HRLM]↔OPDEF DAP[HRRM]
	OPDEF CAR[HLRZ]↔OPDEF CDR[HRRZ]
	OPDEF LAC[MOVE]↔OPDEF DAC[MOVEM]↔OPDEF GO[JRST]

;STORAGE ------------------------------------------------------------
	NWD:	0			;FOR NUMBER OF WORDS OF INPUT.
	↓BUF1:	BLOCK	BUFSIZ+1	;BUFFER 1
	BUF2:	BLOCK	BUFSIZ+1	;BUFFER 2
	FILBLK: 'MUSIC '↔'MUS   '↔0↔0
	CLIST:	IOWD 1,NWD↔0		;FOR THE FIRST RECORD
	INLIST:	0↔0			;WILL CONTAIN AN IOWD
	OUTWC:	0↔3650			;WILL CONTAIN AN IOWD FOR D-A
	OUTBIT: 4000↔0↔0		;BITS FOR D-A
;--------------------------------------------------------------------
  
SA:	CALLI↔OPEN 1,[17↔'DSK   '↔0]↔HALT SA	;FROM DISK.
	SETZM FILBLK+3
	MOVEI A,0↔DPB A,[POINT 2,OUTBIT,26]	;ONE CHANNEL.
	MOVEI A,3↔DPB A,[POINT 3,OUTBIT,32]	;10 KILO HERTZ.
LX:	OUTSTR[ASCIZ/	PLAY ?/]↔INCHRW		;PLAY FROM DISK.
	SETZM FILBLK+3↔LOOKUP 1,FILBLK
	GO[OUTSTR[ASCIZ/FILE NOT FOUND/]↔GO LX]
XOPEN:	MOVSI 'XGP'↔DEVUSE
	CAR↔CAIN 1B18↔GO XGPOK
	INIT 16,17↔SIXBIT .XGP.↔0
	JRA 16,2(16)
XGPOK:	OPEN 2,[117↔'AD    '↔0]
  	JRST[OUTSTR[ASCIZ/***D-A NOT AVAILABLE/]↔CALLI  12]
SPWAR:	SPCWAR 17,[CALLI]↔OUTSTR [ASCIZ/ GO? /]↔INCHRW A
LNTH:	MOVS A,FILBLK+3↔MOVNM A,NWD				;FILE SIZE.
;BEGIN MAIN BODY OF PROGRAM
LOOP:	JSP RET,SUB↔BUF1-1↔JUMPLE B,OUT
	JSP RET,SUB↔BUF2-1↔JUMPG  B,LOOP
;--------------------------------------------------------------------
OUT:	CLOSE 1,↔RELEASE 2,
	RELEASE 16,↔SPCWAR 0,'SSW'
	JRST LX
;--------------------------------------------------------------------
;SUBROUTINE TO SET UP IOWD AND READ AND WRITE.
;  1(RET) WILL BE THE RETURN
;  0(RET) WILL BE THE ADDRESS OF THE BUFFER TO BE
;         PUT IN THE RIGHT HALF OF THE IOWD.
;  A      WILL BE A WORK REGISTER
;  B      WILL BE TESTED ON THE OUTSIDE.

SUB:	MOVNI A,BUFSIZ↔ADDB A,NWD
	LAC B,A↔JUMPL A,LAST↔SETZ A,
LAST:	ADDI A,BUFSIZ↔MOVNS A
	HRL A,0(RET)
	MOVSM A,INLIST↔MOVSM A,OUTWC
	INPUT 1,INLIST↔OUTPUT 2,OUTWC
	GO 1(RET)
;--------------------------------------------------------------------
END SA